#include <stdio.h>
#include <malloc.h>
#include "Lstack.h"
#include "Lqueue.h"
#include <string.h>
#include <stdlib.h>

int main()
{

    char str[100];
    printf("请输入您的字符串：");
    scanf("%s", str); // str是字符串，本身就是地址，所以前面不需要&
    int l = strlen(str);
    int i;

    /*****把字符串存储到堆栈中*****/
    sll sh;
    // Sinitiate(sh);
    sh = (sll)malloc(sizeof(snode));
    sh->next = nullptr;
    i = 0;
    while (i <= l - 1)
    {
        Spush(sh, str[i]);
        i = i + 1;
    }
    /*****把字符串存储到堆栈中*****/

    /*****把字符串存储到队列中*****/
    qll qh;
    qh = (qll)malloc(sizeof(qnode));
    qh->next = nullptr;
    Qappend(qh, str); //把循环放在头文件外面时出现了难以解决的“segment fault”
                      //故暂且将循环放进头文件里
    /*****把字符串存储到队列中*****/

    i = 0;
    while (i <= l - 1)
    {
        if (Spop(sh) != Qdelete(qh)) // 比较并移除堆栈和队列的第一个结点（不含头结点）
        {
            printf("%s不是回文。\n", str);
            system("pause");
            return 0;
        }
        i = i + 1;
    }
    printf("%s是回文。\n", str); //未发现不一样的字符，因此断定是回文
    system("pause");
    return 1;
    
}
